package com.gylang.im.core.service;


import java.util.Set;

/** 管理bean
 * @author gylang,
 * date 2020/5/14,
 * @version 1.0
 */
public interface BeanManagerService {

    /**
     * 动态注入bean
     * @param name bean 名称
     * @param clazz 注入类
     * @return 注入结果
     */
    Boolean addBean(String name, Class<?> clazz);

    /**
     * 是否存在bean
     * @param name bean 名称
     * @return 是否存在
     */
    Boolean contains(String name);
    /**
     * 删除bean
     * @param name 删除bean的名字
     * @return 删除成功标识
     */
    Boolean delBean(String name);

    /**
     * 动态注入bean
     * @param name bean 名称
     * @param clazz 注入类
     * @return 返回添加结果
     */
    Boolean coverBean(String name, Class<?> clazz);

    /**
     * 获取bean 实例
     * @param name bean 名字
     * @param clazz bean 类型
     * @param <T> bean类型
     * @return 带类型的bean对象
     */
    <T> T getBean(String name, Class<T> clazz);

    /**
     *   获取bean
     * @param name 删除bean
     * @return bean对象
     */
    Object getBean(String name);

    /**
     *   获取bean
     * @return bean对象
     */
    Set<String> getAllBean();
}
